import router from './router'
import store from './store'
// 消息提示组件
// import { Message } from 'element-ui'
import NProgress from 'nprogress' // progress bar
import 'nprogress/nprogress.css' // progress bar style
// 设置网页标题
import getPageTitle from '@/utils/get-page-title'
// import { getToken } from '@/utils/auth' // get token from cookie
// // 获取页面标题
// import getPageTitle from '@/utils/get-page-title'

// NProgress.configure({ showSpinner: false }) // NProgress Configuration
// // 白名单
const whiteList = ['/login', '/404'] // no redirect whitelist
// 路由守卫-前置守卫
router.beforeEach((to, from, next) => {
  // start progress bar

  // 设置页面标题
  // set page title
  // document.title = getPageTitle(to.meta.title)

  // 获取token
  const hasToken = store.state.user.token
  // 开始显示进度条
  NProgress.start()
  if (hasToken) {
    if (to.path === '/login') {
      // 如果存在token' 访问的优势登录页面,直接访问主页
      next({ path: '/' })
    } else {
      // 直接放行
      next()
      store.dispatch('user/getUserInfo')
    }
  } else {
    /* has no token*/
    // 判断访问的页面在不在白名单,如果在直接放行
    if (whiteList.includes(to.path)) {
      // in the free login whitelist, go directly
      next()
    } else {
      next('/login')
    }
  }
  // 访问login页面,会显示进度条,但是访问以后,token存在的,所以会直接跳转到主页
  // 这时候主页前后的路由是没有改变的,所以不会走afterEach后置守卫
  // 所以我们需要在前置守卫后面关闭进度条才可
  NProgress.done()
})
// 设置网页标题
router.beforeEach((to, from, next) => {
  document.title = getPageTitle(to.meta.title)
  next()
})
// // 后置守卫
// 当访问的路由前后一致时,是不问执行路由后置守卫
router.afterEach(() => {
  // finish progress bar
  NProgress.done()
})
